home *** CD-ROM | disk | FTP | other *** search
- DATA SEGMENT PUBLIC 'DATA'
- TITLE__ DB 'TITLE: SOUND FOR MS FORTRAN'
- COPY_R DB ' (C) John R. Petrocelli'
- DB ' Schenectady,NY '
- DB ' 01/13/86 '
- BADHZ_MSG DB ' ** SOUND FREQ OUT OF RANGE$'
- BADLEN_MSG DB ' ** SOUND DURATION OUT OF RANGE$'
- DATA ENDS
- DGROUP GROUP DATA
- CODE SEGMENT 'CODE'
- ASSUME CS:CODE,DS:DGROUP,SS:DGROUP
- PUBLIC SOUND
- SOUND PROC FAR
- PUSH BP
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH DX
- PUSH DS
- PUSH DI
- MOV BP,SP
- LES BX,DWORD PTR[BP+22]
- MOV DI,[BX]
- CMP DI,21
- JL BADHZ
- CMP DI,25000
- JG BADHZ
- LES BX,DWORD PTR[BP+18]
- MOV BX,[BX]
- CMP BX,21
- JL BADLEN
- CMP BX,25000
- JG BADLEN
- MOV AL,0B6H
- OUT 43H,AL
- MOV DX,14H
- MOV AX,4F38H
- DIV DI
- OUT 42H,AL
- MOV AL,AH
- OUT 42H,AL
- IN AL,61H
- MOV AH,AL
- OR AL,3
- OUT 61H,AL
- WAIT: MOV CX,2801
- SPKR_ON:
- LOOP SPKR_ON
- DEC BX
- JNZ WAIT
- MOV AL,AH
- OUT 61H,AL
- QUIT: POP DI
- POP DS
- POP DX
- POP CX
- POP BX
- POP AX
- POP BP
- RET 08
- BADHZ:
- LEA DX,BADHZ_MSG
- MOV AX,0900H
- INT 21H
- JMP QUIT
- BADLEN:
- LEA DX,BADLEN_MSG
- MOV AX,0900H
- INT 21H
- JMP QUIT
- SOUND ENDP
- CODE ENDS
- END